//1422. 分割字符串的最大得分


#include <string>
#include <algorithm>
using namespace std;

class Solution {
public:
    int maxScore(string s) {
        int n = s.size();
        int ret = 0;
        //首次左右区间分割
        if(s[0] == '0')
            ret++;
        for(int i = 1; i < n; i++)
        {
            if(s[i] == '1')
                ret++;
        }

        int tmp = ret;
        //循环分割左右区间，i为分割点，[0,i]为左区间，[i, n-1]为右区间，因此s[i]为0，tmp++，为1,tmp--
        for(int i = 1; i < n-1; i++)//分为左右子区间，因此只到n-1就可以
        {
            if(s[i] == '0')
            {
                tmp++;
            }
            else
            {
                tmp--;
            }
            ret = max(ret, tmp);//每次都更新一遍
        }
        return ret;
    }
};